package py.edu.ucom.cadira.game.war;

import org.jdom.Element;

/**
 * 
 * @author Waterloo Team
 *         Esta clase es la que identifica a cada ficha dentro del juego
 *         tiene los atributos Color: que es el color de la ficha Rojo o Azul
 *         Rango: que define el rango jerarquico de la ficha Valor: es el valor
 *         que define a la ficha de acuerdo al rango jerarquico
 */
public class Tab {
	private int color;

	private String rango;

	private int valor;

	private boolean estado_ficha;

	private int[][] tableroEstadoFicha;

	public Tab() {
		this.tableroEstadoFicha = new int[10][10];
		this.estado_ficha = true;
		this.valor = -1;
	}

	public Tab(int valor, int color) {
		this.valor = valor;
		this.color = color;
		switch (valor) {
		case 0:
            this.rango = ("Espia");
            break;
        case 1:
            this.rango = ("Bandera");
            break;
        case 2:
            this.rango = ("Soldado");
            break;
        case 3:
            this.rango = ("Cabo desarmador");
            break;
        case 4:
            this.rango = ("Sargento");
            break;
        case 5:
            this.rango = ("Capitan");
            break;
        case 6:
            this.rango = ("Mayor");
            break;
        case 7:
            this.rango = ("Teniente");
            break;
        case 8:
            this.rango = ("Coronel");
            break;
        case 9:
            this.rango = ("General");
            break;
        case 10:
            this.rango = ("Mariscal");
            break;
        case 11:
            this.rango = ("Bomba");
            break;
		}
	}

	public void inicializarTableroEstadoAgente() {
		for (int i = 0; i < 10; i++) {
			for (int j = 0; j < 10; j++) {
				tableroEstadoFicha[i][j] = 0;
			}
		}
	}

	public void setVisitaAgente(int i, int j) {
		tableroEstadoFicha[i][j] = tableroEstadoFicha[i][j] + 1;
	}

	public int getVisitaAgente(int i, int j) {
		return tableroEstadoFicha[i][j];
	}

	public boolean tieneValor() {
		return valor != -1;
	}

	public int getColor() {
		return color;
	}

	public String getColor(Tab fc) {
		if (fc.getColor() == 1)
			return "RED";
		else if (fc.getColor() == 2)
			return "BLUE";
		else
			return "UNALLOCATED";
	}
    public String getColorString() {
        if (this.getColor() == 1)
            return "RED";
        else if (this.getColor() == 2)
            return "BLUE";
        else
            return "UNALLOCATED";
    }
	public void setColor(int color) {
		this.color = color;
	}

	public String getRango() {
		return rango;
	}

	public void setRango(String rango) {
		this.rango = rango;
	}

	public int getValor() {
		return valor;
	}

	public void setValor(int valor) {
		this.valor = valor;
	}
    public void setColorForString(String valor) {
        if (valor.compareToIgnoreCase("RED")==0)
            this.color = 1;
        else if (valor.compareToIgnoreCase("BLUE")==0)
            this.color = 2;
        else
            this.color = -1;
    }

	public boolean isEstado_ficha() {
		return estado_ficha;
	}

	public void setEstado_ficha(boolean estado_ficha) {
		this.estado_ficha = estado_ficha;
	}
    
    public Element toXml(Element tabNode) {
        Element valorNode = new Element("valor");
        valorNode.addContent(String.valueOf(getValor()));
        tabNode.addContent(valorNode);
        Element colorNode = new Element("color");
        colorNode.addContent(getColor(this).toUpperCase());
        tabNode.addContent(colorNode);
        return tabNode;
    }
    public Tab fromXml(Element tabNode){
        Element valorNode = tabNode.getChild("valor");
        this.setValor(Integer.parseInt(valorNode.getValue()));
        Element colorNode = tabNode.getChild("color");
        this.setColorForString(colorNode.getValue());
        return this;
        
    }
}
